package com.chucang.shucang.ttp.controller;

import com.chucang.shucang.common.base.utils.R;
import com.chucang.shucang.ttp.nftcenter.model.dto.CreateAccountDTO;
import com.chucang.shucang.ttp.nftcenter.model.dto.NFTOperateDTO;
import com.chucang.shucang.ttp.nftcenter.model.req.NFTCreateReq;
import com.chucang.shucang.ttp.nftcenter.model.req.NFTTransferReq;
import com.chucang.shucang.ttp.nftcenter.proxy.AvataProxy;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
 * @author flitsneak
 * @email flitsneak@gmail.com
 * @date 2022/10/17 23:16
 * @description
 */
@RestController
@RequestMapping("/nft")
@RequiredArgsConstructor
public class NFTController {
    private final AvataProxy avataProxy;

    /**
     * 创建账户
     *
     * @param name
     * @param operatorId
     * @return
     */
    @GetMapping("/createAccount/{name}/{operatorId}")
    public R<CreateAccountDTO> createAccount(@PathVariable String name, @PathVariable String operatorId) {
        CreateAccountDTO account = avataProxy.createAccount(name, operatorId);
        return R.ok(account);
    }

    /**
     * 创建nft类别
     *
     * @param nftCreateReq
     * @return
     */
    @PostMapping("/createNFT")
    public R<NFTOperateDTO> createNFT(@RequestBody NFTCreateReq nftCreateReq) {
        NFTOperateDTO nft = avataProxy.createNFT(nftCreateReq);
        return R.ok(nft);
    }

    /**
     * 转让nft
     *
     * @param nftTransferReq
     * @return
     */
    @PostMapping("/transferNFT")
    public R<NFTOperateDTO> transferNFT(@RequestBody NFTTransferReq nftTransferReq) {
        NFTOperateDTO nftOperateDTO = avataProxy.transferNFT(nftTransferReq);
        return R.ok(nftOperateDTO);
    }
}
